import axios from 'axios';
import {message, Spin} from 'antd';
// import stores from '../stores'

// 用于屏蔽全局spin
const stores = {
  home: {
    openLoading: () => {},
    closeLoading: () => {}
  }
}

const service = axios.create({
  baseURL: '',
  timeout: 6000
});

service.interceptors.request.use(config => {
  stores.home.openLoading();
  return config;
}, error => {
  stores.home.closeLoading();
  console.error('request', error.message);
  Promise.reject(error);
});

service.interceptors.response.use(res => {
  stores.home.closeLoading();
  if(res.data.code === 0) {
    return res.data.data;
  }
  // 这里如果返回信息没有code，直接返回内容，不做错误处理
  return res.data;
  // message.error(res.data.message || '请求错误');
}, error => {
  stores.home.closeLoading();
  // 优先处理返回不同状态码的错误情况
  if(error && error.response) {
    switch (error.response.status) {
      case 401:
        message.error(error.response.data && error.response.data.payload || '请求错误');
        break;
      default:
        break;
    };
    return Promise.reject(error.response);
  }
  console.error('response', error.message);
  message.error(error.message || '请求错误');
  return Promise.reject(error);
});

export default service;